home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / c64-preservation-project / apps / cmd_hd_utilities[cmd_19xx](v1_92).nbz / fix blocks (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  10.7 KB  |  472 lines

  1. 1000 REM FIX BLOCKS (C)1990 CMD
  2. 1010 VN$="V2.04 06/21/96"
  3. 1020 F=ABS(PEEK(65533)=255)
  4. 1030 :
  5. 1040 PRINT"[147]FIX BLOCKS "VN$:PRINT
  6. 1050 PRINT"FIX BLOCKS ON ENTIRE DRIVE (Y/N)  N"
  7. 1060 PRINT"(ENTER 'Y' ONLY IF YOUR SYSTEM AND/OR"
  8. 1070 PRINT"PARTITION TABLE IS CORRUPT!)"
  9. 1080 PRINT"[145][145][145][145]";:INPUTPE$
  10. 1090 :
  11. 1100 FORI=0TO8:READZO(I):NEXT
  12. 1110 FORI=0TO8:READZM(I):NEXT
  13. 1120 FORI=0TO8:READZS(I):NEXT
  14. 1130 :
  15. 1140 DIM SD(56):DIM SL(56):DIM DO(56)
  16. 1150 DIM TB(56)
  17. 1160 DIM RS(28)
  18. 1170 H$="0123456789ABCDEF"
  19. 1180 SB=16384
  20. 1190 :
  21. 1200 DIM PN%(255)
  22. 1210 DIM PN$(255)
  23. 1220 DIM PS%(255)
  24. 1230 :
  25. 1240 IFPE$="Y"THEN3650
  26. 1250 :
  27. 1260 INPUT"[147]HD DEVICE NUMBER";DV
  28. 1270 OPEN15,DV,15
  29. 1280 :
  30. 1290 PRINT#15,"M-R"+CHR$(160)+CHR$(254)+CHR$(6)
  31. 1300 FORI=1TO6:GET#15,A$:ID$=ID$+A$:NEXT
  32. 1310 IFID$<>"CMD HD"THEN PRINT"HD NOT PRESENT AT THAT DEVICE.":CLOSE15:END
  33. 1320 :
  34. 1330 PRINT:PRINT"READING PARTITION DIRECTORY.";
  35. 1340 PI=0
  36. 1350 OPEN2,DV,0,"$=P"
  37. 1360 FORI=1TO34:GET#2,A$:NEXT
  38. 1370 :
  39. 1380 PI=PI+1
  40. 1390 GET#2,A$,B$:A=ASC(A$+CHR$(0)):B=ASC(B$+CHR$(0))
  41. 1400 PN%(PI)=A+B*256
  42. 1410 GET#2,A$:IFA$<>CHR$(34)THEN1410
  43. 1420 PN$(PI)=A$
  44. 1430 GET#2,A$:IFA$<>CHR$(34)THENPN$(PI)=PN$(PI)+A$:GOTO1430
  45. 1440 PN$(PI)=PN$(PI)+A$
  46. 1450 GET#2,A$:IFA$<>""THEN1440
  47. 1460 GET#2,A$,B$
  48. 1470 PRINT".";
  49. 1480 IFA$<>""ORB$<>""THEN1380
  50. 1490 CLOSE2:PRINT
  51. 1500 :
  52. 1510 TL=1:CL=1:WL=16:TC=4
  53. 1520 PRINT"[147] [176]";:FORI=1TO36:PRINTCHR$(96);:NEXT:PRINT"[174]":A$=CHR$(125)
  54. 1530 FORI=1TOWL:PRINT" "A$"                                    "A$:NEXT
  55. 1540 PRINT" [173]";:FORI=1TO36:PRINTCHR$(96);:NEXT:PRINT"[189]"
  56. 1550 PRINT
  57. 1560 PRINT" USE CURSOR KEYS TO MOVE POINTER"
  58. 1570 PRINT" PRESS <RETURN> TO SELECT/DESELECT"
  59. 1580 PRINT" PRESS 'T' TO TOGGLE ALL SELECTIONS"
  60. 1590 PRINT" PRESS '_' WHEN DONE";
  61. 1600 :
  62. 1610 PRINT""
  63. 1620 LL=TL+WL-1:IFLL>PITHENLL=PI
  64. 1630 FORI=TL TO LL:PRINTTAB(TC)"    [157][157][157][157]"PN%(I):PRINT"[145]";
  65. 1640 A$=" ":IFPS%(I)<>0THENA$="*"
  66. 1650 PRINTTAB(TC+5)A$PN$(I):NEXT
  67. 1660 IF(LL-TL)=(WL-1)THEN1680
  68. 1670 FORI=LLTOTL+WL-2:PRINTTAB(TC)"                               ":NEXT
  69. 1680 PRINT"";:FORI=1TOCL:PRINT"";:NEXT
  70. 1690 PRINTTAB(TC-1)"=>[157][157]";
  71. 1700 CI=TL+CL-1
  72. 1710 GETA$:IFA$=""THEN1710
  73. 1720 PRINT"  [157][157]";
  74. 1730 IFA$<>CHR$(17)THEN1780
  75. 1740 : CL=CL+1:IFCL+TL-1>PITHENCL=CL-1:GOTO1690
  76. 1750 : IFCL>WLTHENTL=TL+WL:CL=1:GOTO1610
  77. 1760 : PRINT"";:GOTO1690
  78. 1770 :
  79. 1780 IFA$<>CHR$(145)THEN1830
  80. 1790 : CL=CL-1:IFCL+TL=1THENCL=1:GOTO1690
  81. 1800 : IFCL=0THENTL=TL-WL:CL=WL:GOTO1610
  82. 1810 : PRINT"[145]";:GOTO1690
  83. 1820 :
  84. 1830 IFA$<>CHR$(13)THEN1900
  85. 1840 :
  86. 1850 : IFPS%(CI)=0THENPS%(CI)=1:A$="*":GOTO1870
  87. 1860 : PS%(CI)=0:A$="[160]"
  88. 1870 : PRINT""A$:PRINT"[145]";
  89. 1880 : GOTO1740
  90. 1890 :
  91. 1900 IFA$<>"T"THEN1970
  92. 1910 : FOR I=0TOPI
  93. 1920 :  IF PS%(I)<>0THENPS%(I)=0:GOTO1940
  94. 1930 :  PS%(I)=1
  95. 1940 : NEXT
  96. 1950 : GOTO 1610
  97. 1960 :
  98. 1970 IFA$<>"_"THEN1690
  99. 1980 :
  100. 1990 :
  101. 2000 :
  102. 2010 PRINT"[147]":PRINT"READING HARDWARE TABLE"
  103. 2020 PRINT#15,"M-R"+CHR$(0)+CHR$(144)+CHR$(224)
  104. 2030 FORI=0TO55
  105. 2040 GET#15,A$:SD(I)=INT(ASC(A$+CHR$(0))/16):SL(I)=ASC(A$+CHR$(0))AND15:NEXT
  106. 2050 FORI=0TO55:GET#15,A$:DO(I)=ASC(A$+CHR$(0))*65536:NEXT
  107. 2060 FORI=0TO55:GET#15,A$:DO(I)=DO(I)+ASC(A$+CHR$(0))*256:NEXT
  108. 2070 FORI=0TO55:GET#15,A$:DO(I)=DO(I)+ASC(A$+CHR$(0)):NEXT
  109. 2080 :
  110. 2090 :REM (MAIN LOOP)------------------
  111. 2100 :
  112. 2110 SD=SD(0):SL=SL(0):GOSUB3340:IFSS<>0THEN GOSUB2840:GOTO2210
  113. 2120 EF=0
  114. 2130 :FOR PX=1 TO PI
  115. 2140 : IF PS%(PX)<>0THENPN=PN%(PX):GOSUB2260
  116. 2150 :
  117. 2160 : IF EF<>0THEN2190
  118. 2170 :NEXT
  119. 2180 REM EXITING ERROR RECOVERY MODE
  120. 2190 MT=0:GOSUB 3360:IFSS<>0THENEF=0
  121. 2200 IFEF=0 THEN PRINT:PRINT"CHECK COMPLETED SUCESSFULLY            "
  122. 2210 IFEF<>0 THEN PRINT:PRINT"REMAPPING UNSUCCESSFUL"
  123. 2220 CLOSE 15:END
  124. 2230 :
  125. 2240 :REM (END OF MAIN LOOP)-----------
  126. 2250 :
  127. 2260 PRINT"CHECKING PARTITION"PN
  128. 2270 PRINT#15,"G-P"+CHR$(PN)
  129. 2280 GET#15,A$:PT=ASC(A$+CHR$(0))
  130. 2290 IFPT=0 THEN PRINT"  INVALID PARTITION!      ";:    GOTO2250
  131. 2300 :
  132. 2310 :FORI=1TO18:GET#15,A$:NEXT
  133. 2320 GET#15,A$,B$,C$
  134. 2330 PO =ASC(A$+CHR$(0))*65536 +ASC(B$+CHR$(0))*256 +ASC(C$+CHR$(0))
  135. 2340 FORI=22TO26:GET#15,A$:NEXT
  136. 2350 GET#15,A$,B$,C$
  137. 2360 PS =ASC(A$+CHR$(0))*65536 +ASC(B$+CHR$(0))*256 +ASC(C$+CHR$(0))
  138. 2370 IFPN=0THENPS=PS+PO:PO=0
  139. 2380 :
  140. 2390 :
  141. 2400 :
  142. 2410 BC=PS:OF=PO:BF=0:BR=0
  143. 2420 PRINT
  144. 2430 :
  145. 2440 VL=65535
  146. 2450 TE=-1
  147. 2460 TE=TE+1:IFOF>=DO(TE+1)THEN2460
  148. 2470 SD=SD(TE):SL=SL(TE)
  149. 2480 IF VL>BC THEN VL=BC
  150. 2490 VE=OF+VL-1
  151. 2500 IF VE>=DO(TE+1) THEN VL=DO(TE+1)-OF
  152. 2510 :
  153. 2520 : SC$="2F 00 00"
  154. 2530 : GOSUB4970
  155. 2540 : BN=OF-(DO(TE)):GOSUB5350
  156. 2550 : SS$=SS$+CHR$(BH)+CHR$(BM)+CHR$(BL)+CHR$(0)
  157. 2560 : BN=VL:GOSUB5350
  158. 2570 : SS$=SS$+CHR$(BM)+CHR$(BL)+CHR$(0)
  159. 2580 : GOSUB4890:GOSUB5090
  160. 2590 : IF SS=0 THEN 2800
  161. 2600 :  BB=RS(4)*65536+RS(5)*256+RS(6)
  162. 2610 :  IF(RS(2)AND15)=1THEN 2630
  163. 2612 :  IF((RS(2)AND15)=9)AND(RS(12)=128)THEN2770
  164. 2620 :  IF(RS(2)AND15)<>3THEN 2840
  165. 2630 :  DL$=CHR$(0)+CHR$(0)+CHR$(0)+CHR$(4)
  166. 2640 :  DL$=DL$+CHR$(RS(3))+CHR$(RS(4))+CHR$(RS(5))+CHR$(RS(6))
  167. 2650 :
  168. 2660 PRINT"BAD BLOCK FOUND------------------------"
  169. 2670 :  PRINT"DEV"SD"  LUN"SL"  ";:GOSUB5230
  170. 2680 :  GOSUB 2870
  171. 2690 :  GOSUB 3550
  172. 2700 :
  173. 2710 :  PRINT#15,"M-W"+CHR$(AL)+CHR$(AH)+CHR$(8)+DL$
  174. 2720 :  SC$="07 00 00 00 00 00"
  175. 2730 :  GOSUB 5080:IFSS<>0THEN 2840
  176. 2740 :  GOSUB 3530:IFSS<>0THEN 2840
  177. 2750 :  PRINT"---------------------------------------"
  178. 2760 :
  179. 2770 :  BC=BC-(BB+DO(TE)-OF)
  180. 2780 :  OF=BB+DO(TE):GOTO2440
  181. 2790 :
  182. 2800 : BC=BC-VL:OF=OF+VL
  183. 2810 IF BC>0 THEN 2440
  184. 2820 EF=0:RETURN
  185. 2830 :
  186. 2840 GOSUB 5180
  187. 2850 EF=1:RETURN
  188. 2860 :
  189. 2870 A0=(BB+DO(TE)-PO)*2 :A1=A0+1
  190. 2880 PRINT"PARTITION"PN TAB(16)"TYPE: ";
  191. 2890 IF PT<>4 THEN 2910
  192. 2900 : PRINT"1581 EMULATION":GOTO2930
  193. 2910 IF PT<>5 THEN 2980
  194. 2920 : PRINT"1581 CP/M"
  195. 2930 : T0=INT(A0/40)+1
  196. 2940 : S0=A0-(T0-1)*40
  197. 2950 : T1=INT(A0/40)+1
  198. 2960 : S1=A1-(T1-1)*40
  199. 2970 : GOTO 3210
  200. 2980 IF PT<>1 THEN 3050
  201. 2990 : PRINT"NATIVE MODE"
  202. 3000 : T0=INT(A0/256)+1
  203. 3010 : S0=A0-(T0-1)*256
  204. 3020 : T1=INT(A0/256)+1
  205. 3030 : S1=A1-(T1-1)*256
  206. 3040 : GOTO 3210
  207. 3050 IF PT<>2 THEN 3070
  208. 3060 : PRINT"1541 EMULATION":GOTO3090
  209. 3070 IF PT<>3 THEN 3140
  210. 3080 : PRINT"1571 EMULATION"
  211. 3090 : A4=A0:GOSUB 3260
  212. 3100 : T0=T4:S0=S4
  213. 3110 : A4=A1:GOSUB 3260
  214. 3120 : T1=T4:S1=S4:GOTO3210
  215. 3130 :
  216. 3140 :IF PT<>6THEN3160
  217. 3150 : PRINT"PRINT BUFFER":RETURN
  218. 3160 :IF PT<>7THEN3180
  219. 3170 : PRINT"FOREIGN MODE":RETURN
  220. 3180 :IFPT<>255THEN3240
  221. 3190 : PRINT"SYSTEM":RETURN
  222. 3200 :
  223. 3210 PRINT"DOS BLOCKS REMAPPED:"
  224. 3220 PRINT" TRACK"T0"  SECTOR"S0
  225. 3230 PRINT" TRACK"T1"  SECTOR"S1
  226. 3240 RETURN
  227. 3250 :
  228. 3260 : I=-1
  229. 3270 : I=I+1:IFA4>=ZO(I+1)THEN3270
  230. 3280 : TX=A4-ZO(I)
  231. 3290 : T4=ZS(I)+INT(TX/ZM(I))
  232. 3300 : S4=TX-INT(TX/ZM(I))*ZM(I)
  233. 3310 : RETURN
  234. 3320 :
  235. 3330 :
  236. 3340 REM SELECTING ERROR RECOVERY MODE
  237. 3350 MT=1
  238. 3360 RI=0
  239. 3370 SD=SD(RI):SL=SL(RI)
  240. 3380 :SC$="1A 00 01 00 14 00"
  241. 3390 :GOSUB 4880:IFSS<>0THENSS=0:RETURN
  242. 3400 :PH=INT((SB+14)/256):PL=(SB+14)-PH*256
  243. 3410 :PRINT#15,"M-R"+CHR$(PL)+CHR$(PH)+CHR$(1)
  244. 3420 :GET#15,A$:A=ASC(A$+CHR$(0))
  245. 3430 :IFMT=0 THEN A=TB(RI)
  246. 3440 :IFMT=1 THEN TB(RI)=A:A=A OR 32
  247. 3450 :PRINT#15,"M-W"+CHR$(PL-14)+CHR$(PH)+CHR$(1)+CHR$(0)
  248. 3460 :PRINT#15,"M-W"+CHR$(PL-2)+CHR$(PH)+CHR$(3)+CHR$(1)+CHR$(6)+CHR$(A)
  249. 3470 :SC$="15 01 00 00 14 00"
  250. 3480 :GOSUB 4880:IFSS<>0THENSS=0:RETURN
  251. 3490 RI=RI+1:IFSD(RI)<8THEN3370
  252. 3500 RETURN
  253. 3510 :
  254. 3520 :
  255. 3530 SC$="2A 00":GOSUB 4970:GOTO3560
  256. 3540 :
  257. 3550 SC$="28 00":GOSUB 4970:GOTO3560
  258. 3560 SS$=SS$+RIGHT$(DL$,4)+CHR$(0)+CHR$(0)+CHR$(1)+CHR$(0)
  259. 3570 AH=INT((SB+512)/256):AL=(SB+512)-AH*256
  260. 3580 GOSUB 4900:GOSUB5090
  261. 3590 RETURN
  262. 3600 :
  263. 3610 DATA 0,357,490,598,683,1040,1173,1281,32000
  264. 3620 DATA 21,19,18,17,21,19,18,17,17
  265. 3630 DATA  1,18,25,31,36,53,60,66,71
  266. 3640 :
  267. 3650 GOSUB 5440
  268. 3652 DV=30
  269. 3654 OPEN15,DV,15
  270. 3655 PRINT#15,"M-R"+CHR$(160)+CHR$(254)+CHR$(6)
  271. 3656 FORI=1TO6:GET#15,A$:ID$=ID$+A$:NEXT
  272. 3657 IFID$<>"CMD HD"THEN PRINT"HD NOT PRESENT AT THAT DEVICE.":CLOSE15:END
  273. 3658 :
  274. 3659 PRINT"[147]SCANNING FOR SCSI DRIVES:      DEV LUN"
  275. 3660 PRINT"                               [163][163][163] [163][163][163]":PRINT
  276. 3670 HA=52736
  277. 3680 IFF=1THENHA=6144
  278. 3690 DIM D%(56):DIM L%(56):DIM DL%(56)
  279. 3700 FORI=0TO255:POKEHA+I,255:NEXT
  280. 3710 GOSUB4770
  281. 3720 D=0:L=0:HI=0
  282. 3730 :
  283. 3740 : DV=TD:SD=D:SL=L:SB=16384
  284. 3750 : SC$="00 00 00 00 00 00"
  285. 3760 : GOSUB4880
  286. 3770 : PRINT"[145]"TAB(31)D TAB(35)"  "
  287. 3780 : IF SS=133THENL=7:GOTO3840
  288. 3790 : PRINT"[145]"TAB(35)L
  289. 3800 : IF SS<>0THEN3840
  290. 3810 : DL=D*16+L
  291. 3820 : POKEHA+HI,DL:HI=HI+1
  292. 3830 :
  293. 3840 L=L+1:IFL=8THENL=0:D=D+1
  294. 3850 IF D<8 THEN 3740
  295. 3860 GOSUB4770
  296. 3870 :
  297. 3880 PRINT"[147]    CURRENTLY RECOGNIZED SCSI DRIVES":PRINT
  298. 3890 PRINT" DEV LUN   DEV LUN   DEV LUN   DEV LUN"
  299. 3900 PRINT" [163][163][163] [163][163][163]   [163][163][163] [163][163][163]   [163][163][163] [163][163][163]   [163][163][163] [163][163][163]"
  300. 3910 :
  301. 3920 GOSUB3940:GOTO4070
  302. 3930 :
  303. 3940 T1=1:T2=5:CT=1:FORI=1TO56:D%(I)=255:L%(I)=255:NEXT
  304. 3950 FORC=0TO3
  305. 3960 :PRINT"";
  306. 3970 :FOR I=C*14 TO C*14+13
  307. 3980 : DL=PEEK(HA+I):IF DL=255 THEN PRINT      TAB(T1+C*10)" -   -":GOTO4020
  308. 3990 : D=(DL AND 240)/16
  309. 4000 : L=(DL AND 15):D%(CT)=D:L%(CT)=L:CT=CT+1
  310. 4010 : PRINTTAB(T1+C*10)D;TAB(T2+C*10)L
  311. 4020 : DL%(I)=DL
  312. 4030 :NEXT I
  313. 4040 NEXT C
  314. 4050 RETURN
  315. 4060 :
  316. 4070 P=1
  317. 4080 PRINT"  USE THE CURSOR KEYS TO SELECT DRIVE  "
  318. 4090 PRINT"  TO FIX - PRESS <RETURN> TO CONTINUE "
  319. 4100 XP$="":YP$=""
  320. 4110 XP=INT((P-1)/14):YP=P-(XP*14):XP=XP*10+8
  321. 4120 PRINT"";
  322. 4130 PRINTLEFT$(XP$,XP);
  323. 4140 PRINTLEFT$(YP$,YP);
  324. 4150 PRINT"_";
  325. 4160 GETK$:IFK$<>CHR$(13)ANDK$<>""ANDK$<>"[145]"ANDK$<>"[157]"ANDK$<>""THEN4160
  326. 4170 IFK$=""ANDP<56THENIFD%(P+1)<>255THENP=P+1
  327. 4180 IFK$="[145]"ANDP>1THENIFD%(P-1)<>255THENP=P-1
  328. 4190 IFK$=""ANDP<43THENIFD%(P+14)<>255THENP=P+14
  329. 4200 IFK$="[157]"ANDP>14THENIFD%(P-14)<>255THENP=P-14
  330. 4210 IFK$=CHR$(13)THEND=D%(P):L=L%(P):GOTO4240
  331. 4220 PRINT"[157] ";:REM D & L
  332. 4230 GOTO4110
  333. 4240 GOSUB4770
  334. 4250 :
  335. 4260 PRINT"";
  336. 4270 : DL=D*16+L
  337. 4280 : FOR I=0TO55
  338. 4290 :  IF DL%(I)=DL THEN FL=1
  339. 4300 : NEXT
  340. 4310 : IF FL=0THEN PRINT"[147]ERROR:[146] SPECIFIED DEV/LUN NOT PRESENT!":GOTO 5410
  341. 4320 :
  342. 4330 : DV=TD:SD=D:SL=L:SB=16384
  343. 4340 : SC$="00 00 00 00 00 00"
  344. 4350 : GOSUB4880:IFSS=2THENGOSUB4880
  345. 4360 : IFSS<>0THENPRINT"[147]ERROR:[146] SCSI DRIVE NOT READY!":GOTO 5410
  346. 4370 :
  347. 4380 :
  348. 4390 SC$="25 00 00 00 00 00 00 00 00 00"
  349. 4400 GOSUB5080:IFSS<>0THEN 5400
  350. 4410 PRINT#15,"M-R"+CHR$(AL+1)+CHR$(AH)+CHR$(3)
  351. 4420 GET#15,BH$,BM$,BL$
  352. 4430 NB=ASC(BH$+CHR$(0))*65536+ASC(BM$+CHR$(0))*256+ASC(BL$+CHR$(0))+1
  353. 4440 :
  354. 4450 :
  355. 4460 PRINT"[147]SCANNING BLOCKS - PLEASE WAIT":PRINT
  356. 4470 PRINT"BAD BLOCKS: 0      REMAPPED: 0"
  357. 4480 BC=NB:BF=0:BR=0:OF=0
  358. 4490 VL=65535
  359. 4500 IF VL>BC THEN VL=BC
  360. 4510 : SC$="2F 00 00"
  361. 4520 : GOSUB4970
  362. 4530 : BN=OF:GOSUB5350
  363. 4540 : SS$=SS$+CHR$(BH)+CHR$(BM)+CHR$(BL)+CHR$(0)
  364. 4550 : BN=VL:GOSUB5350
  365. 4560 : SS$=SS$+CHR$(BM)+CHR$(BL)+CHR$(0)
  366. 4570 : GOSUB4890:GOSUB5090
  367. 4580 : IF SS=0 THEN 4720
  368. 4590 :  BB=RS(4)*65536+RS(5)*256+RS(6)
  369. 4600 :  IF(RS(2)AND15)=1THEN 4620
  370. 4602 :  IF((RS(2)AND15)=9)AND(RS(12)=128)THEN4700
  371. 4610 :  IF(RS(2)AND15)<>3THEN 5400
  372. 4620 :  DL$=CHR$(0)+CHR$(0)+CHR$(0)+CHR$(4)
  373. 4630 :  DL$=DL$+CHR$(RS(3))+CHR$(RS(4))+CHR$(RS(5))+CHR$(RS(6))
  374. 4640 :  GOSUB5230:BF=BF+1:PRINT"[145][145]"TAB(11)BF:PRINT"[145]";
  375. 4650 :  PRINT#15,"M-W"+CHR$(AL)+CHR$(AH)+CHR$(8)+DL$
  376. 4660 :  SC$="07 00 00 00 00 00"
  377. 4670 :  GOSUB 5080:IFSS<>0THEN 5400
  378. 4680 :  BR=BR+1:PRINTTAB(28)BR:PRINT"                                       "
  379. 4690 :  PRINT"[145]";
  380. 4700 :  BC=BC-(BB-OF):OF=BB:GOTO 4490
  381. 4710 :
  382. 4720 : BC=BC-VL:OF=OF+VL
  383. 4730 IF BC>0 THEN 4490
  384. 4740 PRINT"CHECK COMPLETED                        ":PRINT:GOTO5410
  385. 4750 :
  386. 4760 :
  387. 4770 CO=130
  388. 4780 EC=2
  389. 4790 PRINT#15,"M-W"+CHR$(08)CHR$(00)CHR$(2)CHR$(BH)CHR$(BL)
  390. 4800 PRINT#15,"M-W"+CHR$(00)CHR$(00)CHR$(1)CHR$(CO)
  391. 4810 PRINT#15,"M-R"+CHR$(00)CHR$(00)CHR$(1)
  392. 4820 GET#15,A$:IFA$=""THENA$=CHR$(0)
  393. 4830 IFA$>CHR$(127)THEN 4810
  394. 4840 IFA$<CHR$(2)  THEN RETURN
  395. 4850 EC=EC-1:IFEC>0THEN 4800
  396. 4860 PRINT"DISK ERROR"ASC(A$)"[157]                 ":GOTO 5410
  397. 4870 :
  398. 4880 GOSUB4970
  399. 4890 AH=INT(SB/256):AL=SB-AH*256
  400. 4900 GOSUB4920:IFSS=2 THEN GOSUB4920
  401. 4910 RETURN
  402. 4920 PRINT#15,"S-C"+CHR$(SD)+CHR$(AL)+CHR$(AH)+SS$
  403. 4930 GET#15,SA$,SB$:SS=ASC(SA$+CHR$(0))
  404. 4940 RETURN
  405. 4950 :
  406. 4960 :
  407. 4970 SS$=""
  408. 4980 FOR I=1 TO LEN(SC$) STEP3
  409. 4990 : HV%=ASC(MID$(SC$,I,1))-55:IFHV%<10THENHV%=HV%+7
  410. 5000 HV%=HV%*16
  411. 5010 : HL%=ASC(MID$(SC$,I+1,1))-55:IFHL%<10THENHL%=HL%+7
  412. 5020 : IF I=4 THEN HV%=(HV%AND31)OR(SL*32)
  413. 5030 : SS$=SS$+CHR$(HV%+HL%)
  414. 5040 NEXT
  415. 5050 RETURN
  416. 5060 :
  417. 5070 :
  418. 5080 GOSUB4880
  419. 5090 IFSS=0 THEN RETURN
  420. 5100 SC$="03 00 00 00 1B 00"
  421. 5110 GOSUB4880
  422. 5120 PRINT#15,"M-R"+CHR$(AL)+CHR$(AH)+CHR$(27)
  423. 5130 FORI=0TO27:GET#15,A$:RS(I)=ASC(A$+CHR$(0)):NEXT
  424. 5140 SS=2:RETURN
  425. 5150 :
  426. 5160 :
  427. 5170 :
  428. 5180 EC=RS(0) :GOSUB5300:EC$=EH$
  429. 5190 EC=RS(2) :GOSUB5300:EK$=EH$
  430. 5200 EC=RS(12):GOSUB5300:ES$=EH$
  431. 5210 PRINT"SCSI ERROR: "EC$" "EK$" "ES$
  432. 5220 IF RS(0)<127 THEN 5280
  433. 5230 EB$=""
  434. 5240 FORI=3TO6
  435. 5250 EC=RS(I):GOSUB5300:EB$=EB$+EH$
  436. 5260 NEXT
  437. 5270 PRINT"BLOCK ADDRESS: "EB$
  438. 5280 RETURN
  439. 5290 :
  440. 5300 EH=INT(EC/16)
  441. 5310 EZ=EC-(EH*16)
  442. 5320 EH$=MID$(H$,EH+1,1)+MID$(H$,EZ+1,1)
  443. 5330 RETURN
  444. 5340 :
  445. 5350 BH=INT(BN/65536)
  446. 5360 BM=INT((BN-(BH*65536))/256)
  447. 5370 BL=BN-(BH*65536+BM*256)
  448. 5380 RETURN
  449. 5390 :
  450. 5400 GOSUB 5180
  451. 5410 CLOSE 15
  452. 5420 END
  453. 5430 :
  454. 5440 PRINT"[147]"
  455. 6010 PRINT"[159]         FIX BLOCKS "VN$
  456. 6012 PRINT"           (ENTIRE DRIVE OPTION)"
  457. 6020 PRINT"   BEFORE CONTINUING YOU SHOULD PLACE"
  458. 6030 PRINT"    YOUR HD INTO INSTALLATION MODE."
  459. 6040 PRINT"   1. PRESS AND HOLD DOWN THE SWAP 8"
  460. 6050 PRINT"      AND SWAP 9 SWITCHES."
  461. 6060 PRINT"   2. WHILE HOLDING DOWN THE SWAP 8 AND"
  462. 6070 PRINT"      SWAP 9 SWITCHES, PRESS THE RESET"
  463. 6080 PRINT"      SWITCH ONCE AND RELEASE IT."
  464. 6090 PRINT"   3. CONTINUE TO HOLD DOWN THE SWAP 8"
  465. 6100 PRINT"      AND SWAP 9 SWITCHES UNTIL THE"
  466. 6110 PRINT"      ACTIVITY LED'S STAY OFF."
  467. 6120 PRINT"   4. RELEASE THE SWAP 8 AND SWAP 9
  468. 6130 [153]"      SWITCHES.
  469. 6140 PRINT"      PRESS <RETURN> TO CONTINUE"
  470. 6150 GETK$:IFK$<>CHR$(13)THEN6150
  471. 6160 RETURN
  472.